Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications are designed to interact with other software applications or other computer systems. For example, a software application may facilitate interaction with a database or other computer server. Such databases store user information, application data and other types of data. This data may be stored for many thousands or even millions of users. Due to the heavy load these databases and other servers are put under, server diagnostics are often performed to determine how efficiently the server or database is operating. This diagnostic data may be taken at periodic intervals and stored in index tables. These index tables can grow quite large over time. Consequently, queries over even relatively small time gaps can be very slow.